﻿using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using SisEagle.View.Web.Base;
using System.Data;
using SisEagle.IView.Produtos;

namespace SisEagle.View.Web.Produto
{
    public partial class Produtos : WebPageBase ,IProdutosView
    {
        #region Singleton
        private SisEagleBO.ProdutosBO _ProdutosBusiness;
        private SisEagleBO.ProdutosBO ProdutosBusiness
        {
            get
            {
                if (_ProdutosBusiness == null)
                    _ProdutosBusiness = new SisEagleBO.ProdutosBO();

                return _ProdutosBusiness;
            }
        }

        private SisEagleBO.ImagensBO _ImagensBusiness;
        private SisEagleBO.ImagensBO ImagensBusiness
        {
            get
            {
                if (_ImagensBusiness == null)
                    _ImagensBusiness = new SisEagleBO.ImagensBO();

                return _ImagensBusiness;
            }
        }

        #endregion

        #region Page-Load
        protected void Page_Load(object sender, EventArgs e)
        {
            inicialize();
            if (!IsPostBack)
            {

            }
        }
        private void inicialize()
        {
            btnLocalizar.Click += (btnLocalizar_Click);
            gridProdutos.PageIndexChanging += (gridProdutos_PageIndexChanging);
            gridProdutos.RowDataBound +=gridProdutos_RowDataBound;

        }

        void gridProdutos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridProdutos.PageIndex = e.NewPageIndex;
            gridProdutos.DataSource = BuscarProdutos();
            gridProdutos.DataBind();
        }

        private DataView BuscarProdutos()
        {
            DataView dv = new DataView();

            dv = ProdutosBusiness.FindAll().Tables[0].DefaultView;

            return dv;
        }
        #endregion

        #region Internal

        protected void btnLocalizar_Click(object sender, ImageClickEventArgs e)
        {
            CarregaGrid();
        }

        private void CarregaGrid()
        {
            gridProdutos.DataSource = ListaResultado;
            gridProdutos.DataBind();
        }

        #endregion


        #region Binding

        public int CodProduto
        {
            get
            {
                if (string.IsNullOrEmpty(txtCodigo.Text) || !(UtilsNumber.IsNumber(txtCodigo.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToInt32(txtCodigo.Text);

            }
            set
            {
                txtCodigo.Text = value.ToString();
            }
        }

        public string NomeProduto
        {
            get
            {
                if (string.IsNullOrEmpty(txtNomeProduto.Text))
                    return string.Empty;

                else
                    return txtNomeProduto.Text.TrimStart();
            }
            set
            {
                txtNomeProduto.Text = value;
            }
        }

        public string Descricao
        {
            get
            {
                if (string.IsNullOrEmpty(txtDescricao.Text))
                    return string.Empty;

                else
                    return txtDescricao.Text.TrimStart();
            }
            set
            {
                txtDescricao.Text = value;
            }
        }

        public int CodCategoria
        {
            get
            {
                if (string.IsNullOrEmpty(UCmbCategoria.ComboCategorias.SelectedValue) || !(UtilsNumber.IsNumber(UCmbCategoria.ComboCategorias.SelectedValue)))
                { 
                    
                    return 0;
                }
                else
                    return Convert.ToInt32(UCmbCategoria.ComboCategorias.SelectedValue);

            }
            set
            {

                UCmbCategoria.ComboCategorias.SelectedValue = value.ToString();
            }
        }

        public decimal ValorCompra
        {
            get
            {
                if (string.IsNullOrEmpty(txtCodigo.Text) || !(UtilsNumber.IsNumber(txtCodigo.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToDecimal(txtCodigo.Text);

            }
            set
            {
                txtCodigo.Text = value.ToString();
            }
        }

        public decimal ValorVenda
        {
            get
            {
                if (string.IsNullOrEmpty(txtCodigo.Text) || !(UtilsNumber.IsNumber(txtCodigo.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToDecimal(txtCodigo.Text);

            }
            set
            {
                txtCodigo.Text = value.ToString();
            }
        }

        public decimal MargemLucro
        {
            get
            {
                if (string.IsNullOrEmpty(txtMargemLucro.Text) || !(UtilsNumber.IsNumber(txtMargemLucro.Text)))
                {
                    return 0;
                }
                else
                    return Convert.ToDecimal(txtMargemLucro.Text);

            }
            set
            {
                txtMargemLucro.Text = value.ToString();
            }
        }

        public DataSet ListaResultado
        {
            get
            {
                if (CodProduto != 0)
                    return ProdutosBusiness.FindBy_CodProduto(CodProduto);

                if (!string.IsNullOrEmpty(NomeProduto))
                    return ProdutosBusiness.FindBy_NomeProduto(NomeProduto);

                if (!string.IsNullOrEmpty(Descricao))
                    return ProdutosBusiness.FindBy_Descricao(Descricao);

                if (CodCategoria != 0)
                    return ProdutosBusiness.FindBy_codCategoria(CodCategoria);

                if (ValorCompra != 0)
                    return ProdutosBusiness.FindBy_Valor_Compra(ValorCompra);

                if (ValorVenda != 0)
                    return ProdutosBusiness.FindBy_Valor_Venda(ValorVenda);
                else
                    return ProdutosBusiness.FindAll();

            }
            set
            {
                ListaResultado = value;
                CarregaGrid();
            }
        }
        #endregion

        protected void gridProdutos_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            int TotalRow = ListaResultado.Tables["Produtos"].Rows.Count;
            AjustaTotalizador(TotalRow, 2,"Valor_Compra",3,"Valor_Venda", e);

            if (e.Row.HasControls())
            {

                Label lblCodigoProduto = (Label)e.Row.FindControl("lblCodigoProduto");
                Image imgProduto = (Image)e.Row.FindControl("imgProduto");

                if ((lblCodigoProduto != null) && (imgProduto != null))
                {

                    SisEagleVO.ImagensVO objImagensVO = new SisEagleVO.ImagensVO();

                    objImagensVO = ImagensBusiness.PegaImagemProduto(lblCodigoProduto.Text);

                    if (objImagensVO.Imagem.ToString().Length > 0)
                    {
                        imgProduto.ImageUrl = "~/Uploads/" + objImagensVO.Imagem;
                    }
                    else
                    {
                        imgProduto.ImageUrl = "~/Uploads/sem_imagem.jpg";
                    }

                }

            }
        }

              

        
      
    }
}